@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

REM =============================================
REM 客户反馈与工单管理系统数据库一键部署脚本
REM 版本: 1.0.0
REM 作者: 高级工程师
REM 日期: 2025-10-05
REM =============================================

echo =============================================
echo 🚀 客户反馈与工单管理系统数据库部署
echo =============================================
echo.

REM 检查参数
if "%~2"=="" (
    echo 用法: %0 ^<数据库用户^> ^<数据库密码^> [数据库主机] [数据库端口]
    echo 示例: %0 root 123456 localhost 3306
    exit /b 1
)

REM 设置变量
set DB_USER=%~1
set DB_PASSWORD=%~2
set DB_HOST=%~3
if "%DB_HOST%"=="" set DB_HOST=localhost
set DB_PORT=%~4
if "%DB_PORT%"=="" set DB_PORT=3306

echo [INFO] 开始部署数据库...
echo [INFO] 数据库用户: %DB_USER%
echo [INFO] 数据库主机: %DB_HOST%
echo [INFO] 数据库端口: %DB_PORT%
echo.

REM 检查MySQL连接
echo [INFO] 检查MySQL连接...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" -e "SELECT 1;" >nul 2>&1
if errorlevel 1 (
    echo [ERROR] MySQL连接失败，请检查用户名和密码
    exit /b 1
)
echo [SUCCESS] MySQL连接成功

REM 创建数据库
echo [INFO] 创建数据库...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" < 01_create_database.sql
if errorlevel 1 (
    echo [ERROR] 数据库创建失败
    exit /b 1
)
echo [SUCCESS] 数据库创建成功

REM 创建表结构
echo [INFO] 创建表结构...

echo [INFO] 创建用户管理表...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system < 02_user_tables.sql
if errorlevel 1 (
    echo [ERROR] 用户管理表创建失败
    exit /b 1
)

echo [INFO] 创建工单管理表...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system < 03_ticket_tables.sql
if errorlevel 1 (
    echo [ERROR] 工单管理表创建失败
    exit /b 1
)

echo [INFO] 创建反馈管理表...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system < 04_feedback_tables.sql
if errorlevel 1 (
    echo [ERROR] 反馈管理表创建失败
    exit /b 1
)

echo [INFO] 创建系统管理表...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system < 05_system_tables.sql
if errorlevel 1 (
    echo [ERROR] 系统管理表创建失败
    exit /b 1
)

echo [SUCCESS] 表结构创建完成

REM 创建索引和约束
echo [INFO] 创建索引和约束...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system < 06_indexes_constraints.sql
if errorlevel 1 (
    echo [ERROR] 索引和约束创建失败
    exit /b 1
)
echo [SUCCESS] 索引和约束创建完成

REM 插入示例数据
echo [INFO] 插入示例数据...
mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system < 07_sample_data.sql
if errorlevel 1 (
    echo [ERROR] 示例数据插入失败
    exit /b 1
)
echo [SUCCESS] 示例数据插入完成

REM 验证部署
echo [INFO] 验证部署结果...

REM 检查表数量
for /f "tokens=*" %%i in ('mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system -e "SHOW TABLES;" ^| find /c /v ""') do set TABLE_COUNT=%%i
set /a TABLE_COUNT=%TABLE_COUNT%-1
echo [INFO] 创建表数量: %TABLE_COUNT%

REM 检查用户数据
for /f "tokens=*" %%i in ('mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system -e "SELECT COUNT(*) FROM users;" ^| findstr /v "COUNT"') do set USER_COUNT=%%i
echo [INFO] 用户数据: %USER_COUNT% 条

REM 检查工单数据
for /f "tokens=*" %%i in ('mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system -e "SELECT COUNT(*) FROM tickets;" ^| findstr /v "COUNT"') do set TICKET_COUNT=%%i
echo [INFO] 工单数据: %TICKET_COUNT% 条

REM 检查反馈数据
for /f "tokens=*" %%i in ('mysql -u "%DB_USER%" -p"%DB_PASSWORD%" feedback_system -e "SELECT COUNT(*) FROM feedbacks;" ^| findstr /v "COUNT"') do set FEEDBACK_COUNT=%%i
echo [INFO] 反馈数据: %FEEDBACK_COUNT% 条

echo [SUCCESS] 部署验证完成

REM 显示部署信息
echo.
echo =============================================
echo 🎉 数据库部署完成！
echo =============================================
echo 数据库名称: feedback_system
echo 数据库用户: %DB_USER%
echo 数据库主机: %DB_HOST%
echo 数据库端口: %DB_PORT%
echo.
echo 📊 部署统计:
echo - 表数量: %TABLE_COUNT%
echo - 用户数据: %USER_COUNT% 条
echo - 工单数据: %TICKET_COUNT% 条
echo - 反馈数据: %FEEDBACK_COUNT% 条
echo.
echo 🔗 连接信息:
echo mysql -h %DB_HOST% -P %DB_PORT% -u %DB_USER% -p feedback_system
echo.
echo 📚 文档位置: database/README.md
echo =============================================

echo [SUCCESS] 🎉 数据库部署完成！
pause
